package com.hello.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 纸质信件邮寄信息对象 sd_shipping_details
 * 
 * @author hello
 * @date 2025-05-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ShippingDetails extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 邮寄ID，主键，自增 */
    private Long shippingId;

    /** 订单ID，唯一，不能为空 */
    @Excel(name = "订单ID，唯一，不能为空")
    private Long orderId;

    /** 信件ID，唯一，不能为空 */
    @Excel(name = "信件ID，唯一，不能为空")
    private Long letterId;

    /** 收件人姓名，不能为空 */
    @Excel(name = "收件人姓名，不能为空")
    private String recipientName;

    /** 地址行1，不能为空 */
    @Excel(name = "地址行1，不能为空")
    private String addressLine1;

    /** 地址行2 */
    @Excel(name = "地址行2")
    private String addressLine2;

    /** 城市，不能为空 */
    @Excel(name = "城市，不能为空")
    private String city;

    /** 省/州/区域 */
    @Excel(name = "省/州/区域")
    private String stateProvinceRegion;

    /** 邮政编码，不能为空 */
    @Excel(name = "邮政编码，不能为空")
    private String postalCode;

    /** 国家，不能为空 */
    @Excel(name = "国家，不能为空")
    private String country;

    /** 电话号码 */
    @Excel(name = "电话号码")
    private String phoneNumber;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactPerson;

    /** 邮寄状态，默认为待处理 */
    @Excel(name = "邮寄状态，默认为待处理")
    private String shippingStatus;

    /** 追踪号 */
    @Excel(name = "追踪号")
    private String trackingNumber;

    /** 发货时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date shippedAt;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setShippingId(Long shippingId) 
    {
        this.shippingId = shippingId;
    }

    public Long getShippingId() 
    {
        return shippingId;
    }
    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }
    public void setLetterId(Long letterId) 
    {
        this.letterId = letterId;
    }

    public Long getLetterId() 
    {
        return letterId;
    }
    public void setRecipientName(String recipientName) 
    {
        this.recipientName = recipientName;
    }

    public String getRecipientName() 
    {
        return recipientName;
    }
    public void setAddressLine1(String addressLine1) 
    {
        this.addressLine1 = addressLine1;
    }

    public String getAddressLine1() 
    {
        return addressLine1;
    }
    public void setAddressLine2(String addressLine2) 
    {
        this.addressLine2 = addressLine2;
    }

    public String getAddressLine2() 
    {
        return addressLine2;
    }
    public void setCity(String city) 
    {
        this.city = city;
    }

    public String getCity() 
    {
        return city;
    }
    public void setStateProvinceRegion(String stateProvinceRegion) 
    {
        this.stateProvinceRegion = stateProvinceRegion;
    }

    public String getStateProvinceRegion() 
    {
        return stateProvinceRegion;
    }
    public void setPostalCode(String postalCode) 
    {
        this.postalCode = postalCode;
    }

    public String getPostalCode() 
    {
        return postalCode;
    }
    public void setCountry(String country) 
    {
        this.country = country;
    }

    public String getCountry() 
    {
        return country;
    }
    public void setPhoneNumber(String phoneNumber) 
    {
        this.phoneNumber = phoneNumber;
    }

    public String getPhoneNumber() 
    {
        return phoneNumber;
    }
    public void setContactPerson(String contactPerson) 
    {
        this.contactPerson = contactPerson;
    }

    public String getContactPerson() 
    {
        return contactPerson;
    }
    public void setShippingStatus(String shippingStatus) 
    {
        this.shippingStatus = shippingStatus;
    }

    public String getShippingStatus() 
    {
        return shippingStatus;
    }
    public void setTrackingNumber(String trackingNumber) 
    {
        this.trackingNumber = trackingNumber;
    }

    public String getTrackingNumber() 
    {
        return trackingNumber;
    }
    public void setShippedAt(Date shippedAt) 
    {
        this.shippedAt = shippedAt;
    }

    public Date getShippedAt() 
    {
        return shippedAt;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("shippingId", getShippingId())
            .append("orderId", getOrderId())
            .append("letterId", getLetterId())
            .append("recipientName", getRecipientName())
            .append("addressLine1", getAddressLine1())
            .append("addressLine2", getAddressLine2())
            .append("city", getCity())
            .append("stateProvinceRegion", getStateProvinceRegion())
            .append("postalCode", getPostalCode())
            .append("country", getCountry())
            .append("phoneNumber", getPhoneNumber())
            .append("contactPerson", getContactPerson())
            .append("shippingStatus", getShippingStatus())
            .append("trackingNumber", getTrackingNumber())
            .append("shippedAt", getShippedAt())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
